﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.luogu.com.cn/problem/P2240
/*
题目描述：
阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有
�
(
�
≤
100
)
N(N≤100) 堆金币，第
�
i 堆金币的总重量和总价值分别是
�
�
,
�
�
(
1
≤
�
�
,
�
�
≤
100
)
m
i
​
 ,v
i
​
 (1≤m
i
​
 ,v
i
​
 ≤100)。阿里巴巴有一个承重量为
�
(
�
≤
1000
)
T(T≤1000) 的背包，但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割，分割完的金币重量价值比（也就是单位价格）不变。请问阿里巴巴最多可以拿走多少价值的金币？

输入格式
第一行两个整数

N,T。

接下来
N 行，每行两个整数


输出格式
一个实数表示答案，输出两位小数
*/

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


// 定义金币结构体数组
struct species {
	double w; // 重量
	double v; // 价值
	double p; // 性价比
} gold[102];

bool cmp(species& a, species& b) {
	return a.p > b.p;
}

// 开始解题：
// 方法——贪心
int main() {
	int n = 0, t = 0;
	cin >> n >> t;
	double sum = 0.0;
	for (int i = 0; i < n; i++) {
		cin >> gold[i].w >> gold[i].v;
		gold[i].p = gold[i].v / gold[i].w;
	}
	// 排序金币数组
	sort(gold, gold + n, cmp);

	// 计算sum
	for (int i = 0; i < n; i++) {
		if (t > gold[i].w) {
			sum += gold[i].v;
			t -= gold[i].w;
		}
		else {
			sum += t * gold[i].p;
			break;
		}
	}
	printf("%.2f\n", sum);

	return 0;
}